import pandas as pd

# 读取 Excel 文件
excel_file = pd.ExcelFile('D:\\bbb\\python-Excelhomework\\student.xlsx')

# 获取所有表名
sheet_names = excel_file.sheet_names
sheet_names

# 获取指定工作表中的数据
df = excel_file.parse('Sheet1')

# 查看数据的基本信息
print('数据基本信息：')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows < 100 and columns < 20:
    # 短表数据（行数少于100且列数少于20）查看全量数据信息
    print('数据全部内容信息：')
    print(df.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print('数据前几行内容信息：')
    print(df.head().to_csv(sep='\t', na_rep='nan'))
    # 按性别统计学生人数
gender_count = df['性别'].value_counts().reset_index(name='学生人数')

print('按性别统计学生人数：')
print(gender_count)
# 定义年龄分组
age_bins = [0, 18, 30, 50, float('inf')]
age_labels = ['0 - 18岁', '19 - 30岁', '31 - 50岁', '51岁及以上']

# 对年龄进行分组
df['年龄段'] = pd.cut(df['年龄'], bins=age_bins, labels=age_labels)

# 按年龄段统计学生人数
age_group_count = df['年龄段'].value_counts().reset_index(name='学生人数')

print('按年龄段统计学生人数：')
print(age_group_count)
# 定义函数，提取省份或市县
def extract_region(address):
    if '海南省' in address:
        return address.split('省')[1].split('市')[0].split('县')[0]
    else:
        return address.split('省')[0].split('自治区')[0]

# 提取地区
df['地区'] = df['家庭地址'].apply(extract_region)

# 按地区统计学生人数
region_count = df['地区'].value_counts().reset_index(name='学生人数')

print('按地区（外省按省份，海南省按市县）统计学生人数：')
print(region_count)